from llama_index.core import Document
from llama_index.core import SimpleDirectoryReader

print('设置元数据方式1')
document = Document(
    text="乾坤大罗移......",
    metadata={"author": "张无忌"}
)
print('==>1', document.metadata)

document.metadata = {"category": "武林秘籍"}

print('==>2', document.metadata)

print('设置元数据方式2')


def set_metadata(filename):
    return {"file_name2": filename}


'''
file_metadata=set_metadata("file1.txt") =>  file_metadata=set_metadata
为什么这样修复？
SimpleDirectoryReader 在读取每个文件时，会自动调用 set_metadata 函数，并将当前文件名作为参数传入。
这样每个文件的元数据都会动态生成（如 {"file_name": "实际文件名.txt"}），而不是固定为 file1.txt。
'''
data_dir = 'D:/pythonRoom/llm_llama/data'
documents = SimpleDirectoryReader(
    input_dir=data_dir,
    file_metadata=set_metadata  # 在读取每个文件时，会自动调用 set_metadata 函数，并将当前文件名作为参数传入
).load_data()

for doc in documents:
    print(doc.metadata)
